package com.gxc.string;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * 题目描述
 * 公司用一个字符串来表示员工的出勤信息
 *
 * absent：缺勤
 * late：迟到
 * leaveearly：早退
 * present：正常上班
 * 现需根据员工出勤信息，判断本次是否能获得出勤奖，能获得出勤奖的条件如下：
 *
 * 缺勤不超过一次；
 * 没有连续的迟到/早退；
 * 任意连续7次考勤，缺勤/迟到/早退不超过3次。
 * 输入描述
 * 用户的考勤数据字符串
 *
 * 记录条数 >= 1；
 * 输入字符串长度 < 10000；
 * 不存在非法输入；
 */
public class Attendance {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = java.lang.Integer.parseInt(scanner.nextLine());
        List<String> list = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            list.add(scanner.nextLine());
        }

        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < list.size(); i++) {
            builder.append(isAttendance(list.get(i)));
            if (i != list.size() -1) builder.append(" ");
        }
        System.out.println(builder);
    }

    private static String isAttendance(String str) {
        int absent = 0;
        boolean prev = false;
        String[] split = str.split(" ");
        int[] time = new int[split.length];
        for (int i = 0; i < split.length; i++) {
            if ("present".equals(split[i])) {
                prev = false;
                continue;
            }
            else if ("absent".equals(split[i])) {
                if (absent==1) return "false";
                absent++;
                prev = false;
            } else {
                if (prev) return "false";
                prev = true;
            }
            if (i == 0) time[i] = 1;
            else time[i] = time[i-1] + 1;
            if (i>6 && !split[i-7].equals("present")) {
                time[i] = time[i] - 1;
            }
            if (time[i] > 3) return "false";
        }
        return "true";
    }

    // 判断是否能获得考勤奖的方法
    private static boolean canReceiveAward(String[] records) {
        // 缺勤次数计数器
        int absentCount = 0;
        // 遍历考勤记录
        for (int i = 0; i < records.length; i++) {
            // 如果记录为缺勤，增加缺勤计数
            if ("absent".equals(records[i])) {
                absentCount++;
                // 如果缺勤超过1次，返回false
                if (absentCount > 1) return false;
            }
            // 如果记录为迟到或早退，且前一天也是迟到或早退，返回false
            if ("late".equals(records[i]) || "leaveearly".equals(records[i])) {
                if (i > 0 && ("late".equals(records[i - 1]) || "leaveearly".equals(records[i - 1]))) {
                    return false;
                }
            }
            // 检查任意连续7天的考勤记录
            if (i >= 6) {
                int countIn7Days = 0;
                // 计算连续7天内非正常上班的天数
                for (int j = i - 6; j <= i; j++) {
                    if (!"present".equals(records[j])) {
                        countIn7Days++;
                    }
                }
                // 如果连续7天内非正常上班超过3天，返回false
                if (countIn7Days > 3) return false;
            }
        }
        // 如果所有条件都满足，返回true
        return true;
    }
}
